import pandas as pd
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams['font.sans-serif']=['SimHei'] #解决中文乱码
plt.rcParams['axes.unicode_minus']=False #让负号正常显示

# 绘制散点图
data1=pd.read_excel('可视化图表.xlsx',sheet_name=1)
print(data1)
color_data='C'+pd.Series(np.where(data1['年份']==2007,'0','1'))
data1.plot('电话次数','销量',kind='scatter',color=color_data.values,title='电话次数和销量散点图')
data1.plot('电话次数','销量',kind='scatter',c='电话次数',title='电话次数和销量散点图')
plt.show()

# 折线图
data3=pd.read_excel('可视化图表.xlsx',sheet_name=3)
print(data3)
data3=data3.T
data3=data3[1:]
data3.rename(columns={0:'用水量'},inplace=True)
print(data3)
#折线图
data3.plot(title='宿舍用水量折线图')
plt.show()

# 柱状图
data4=pd.read_excel('可视化图表.xlsx',sheet_name=4)
data4=data4.set_index('产品')
print(data4)
data4.plot(kind='bar')  #柱状图
data4.plot(kind='barh')  #水平柱状图
plt.show()

data5=pd.read_excel('可视化图表.xlsx',sheet_name=5)
data5=data5.set_index('季度')
print(data5)
#每列绘制子图(两个产品分别绘制在一张图上进行显示)
data5.plot(kind='bar',subplots=True)
#排列柱状图（一组数据并排显示）
data5.plot(kind='bar')
#堆叠柱状图（一组数据上下显示）
data5.plot(kind='bar',stacked=True)
plt.show()


# 直方图
data6=pd.read_excel('可视化图表.xlsx',sheet_name=6)
print(data6.head())
data6.plot(kind='hist',title='海狸一天内体温分布情况',edgecolor='k')
#设置density
data6.plot(kind='hist',title='海狸一天内体温分布情况',edgecolor='k',density=True)
#设置bins=5
data6.plot(kind='hist',title='海狸一天内体温分布情况',edgecolor='k',bins=5)
plt.show()

# 饼状图
data7=pd.read_excel('可视化图表.xlsx',sheet_name=7)
data7=data7.set_index('区域')
print(data7)
data7.plot(kind='pie',subplots=True,autopct='%.1f%%')
plt.show()


# 面积图
data8=pd.read_excel('可视化图表.xlsx',sheet_name=8)
data8=data8.set_index('年份')
print(data8.head())
data8.plot(kind='area')
data8.plot(kind='area',alpha=0.5,stacked=False)
plt.show()

# 箱线图
data9=pd.read_excel('可视化图表.xlsx',sheet_name=9)
print(data9.head())
data9.plot(kind='box')
data9.plot(kind='box',patch_artist=True)
plt.show()